SetSystemPowerState (coredll)
Last changed: -80.138.195.32

.
Summary
Controls the overall device power state

C# Signature:

    [DllImport("coredll.dll", SetLastError=true)]
    static extern int SetSystemPowerState(string psState, int StateFlags, int Options);

VB Signature:

    Declare Function SetSystemPowerState Lib "Coredll" ( _
    ByVal psState As String, _
    ByVal StateFlags As Integer, _
    ByVal Options As Integer) As Integer

User-Defined Types:

None.

Alternative Managed API:

Do you know one? Please contribute it!

Notes:

May be more effective at forcing the device off than holding it on.

Tips & Tricks:

Please add some!

Sample Code (VB):

    Const POWER_STATE_ON As Integer = &H10000
    Const POWER_STATE_OFF As Integer = &H20000
    Const POWER_STATE_SUSPEND As Integer = &H200000
    Const POWER_FORCE As Integer = 4096
    Const POWER_STATE_RESET as Integer = 0x800000 'this wil make the device soft reset! :)

    Public Sub ForcePower()
    SetSystemPowerState(Nothing, POWER_STATE_ON, POWER_FORCE)
    End Sub

    Public Sub SoftReset()
    SetSystemPowerState(Nothing, POWER_STATE_RESET, POWER_FORCE)
    End Sub

Sample Code (C#):

    const int POWER_STATE_ON = 0x00010000;
    const int POWER_STATE_OFF = 0x00020000;
    const int POWER_STATE_SUSPEND = 0x00200000;
    const int POWER_FORCE As Integer = 4096;
    const int POWER_STATE_RESET = 0x00800000;

    public int ForcePower()
    {
            retrun SetSystemPowerState(null, POWER_STATE_ON, POWER_FORCE);
    }

    public int SoftReset()
    {
            // Though I guess this will never really return anything
        return SetSystemPowerState(null, POWER_STATE_RESET, POWER_FORCE);
    }

Documentation